package com.chenbei.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chenbei.common.domain.vo.TreeNode;
import com.chenbei.system.domain.SysOrganization;
import com.chenbei.system.vo.req.SysOrganizationReq;

import java.util.List;

public interface ISysOrganizationService extends IService<SysOrganization> {

    /**
     * 添加组织部门
     * @param organization 组织部门实体
     */
    void add(SysOrganization organization);

    /**
     * 更新组织部门
     * @param organization 组织部门实体
     */
    void update(SysOrganization organization);

    /**
     * 删除组织部门
     * @param id 组织部门ID
     */
    void delete(long id);

    /**
     * 根据条件查询组织部门
     * @param sysOrganizationReq 请求实例
     * @return List
     */
    List<SysOrganization> list(SysOrganizationReq sysOrganizationReq);

    /**
     * 获取当前节点的所有子节点
     * @param id 节点ID
     * @return List
     */
    List<SysOrganization> allChildrenById(Long id);

    /**
     * 获取当前节点及其所有子节点
     * @param id 节点ID
     * @return List
     */
    List<SysOrganization> selfAndAllChildrenById(Long id);

    /**
     * 组织部门树结构
     * @return List
     */
    List<TreeNode<SysOrganization>> allTree();

    /**
     * 根据用户ID获取组织部门
     * @param sysUserId 用户ID
     * @return SysOrganization
     */
    SysOrganization getBySysUserId(Long sysUserId);
}
